SetTimerResolutionService.exe is built from SetTimerResolutionService.cs. It requires .Net framework 4 or newer.
To build exe-file use csc.exe from .Net framework.

Per start SetTimerResolutionService retrieves maximum, minimum and default timer resolutions. 
Then it reads content of ini-file "SetTimerResolutionService.exe.ini" (just append the ".ini" to exe-file name). 
If ini-file doesn`t exist service just sets maximum timer resolution (old behaviour). 
If ini-file is empty service does nothing. 
If ini-file contains names of processes (with or without ".exe") - either comma-separated or space-separated or one-per-line - 
then service does:
- for all specified processes (names) create WMI event handler on Win32_Process class instance creation
- if WMI event handler is triggered then:
--- increment counter of maximum timer resolution and if its value is less or equal 1 then set maximum timer resolution
--- obtain handle of a started process and wait on it until porcess is stopped (through win API functions)
--- decrement counter of maximum timer resolution and if its value is less then 1 then set default timer resolution


SetTimerResolutionService logs events into 'Application' windows log. It logs every change of timer resolution and errors.

Before registering version 2 of service old version (either C# or C++) must be stopped and unregistered.
Use 'installutil /i' and 'installutil /u' to register and unregister C# versions of service. 
Old C++ version of service can be unregistered in cmd.exe - 'SetTimerResolutionService.exe -Uninstall'.